package com.fundboss.display;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class GraphDisplayConfig {
	//AMLOW: check or unceck all. also have some standard sets.
	
	//MArket summary:
	SeriesDisplay indexPrice= new SeriesDisplay();
	SeriesDisplay indexVolume= new SeriesDisplay();
	SeriesDisplay indexVolatility= new SeriesDisplay();
	SeriesDisplay indexExcessReturns= new SeriesDisplay();
	SeriesDisplay indexDivYield= new SeriesDisplay();
	SeriesDisplay averageRsq= new SeriesDisplay();
	SeriesDisplay riskFree= new SeriesDisplay();
	SeriesDisplay indexDividend = new SeriesDisplay();
	SeriesDisplay equityRiskPremium = new SeriesDisplay();
	
	Map<Class,TraderDisplayConfig> tradersConfig = new HashMap<Class, TraderDisplayConfig>();
	Map<Integer,AssetDisplayConfig> assetsConfig = new HashMap<Integer, AssetDisplayConfig>();
	
	public class AssetDisplayConfig{
		SeriesDisplay price= new SeriesDisplay();
		SeriesDisplay volume= new SeriesDisplay();
		SeriesDisplay beta= new SeriesDisplay();
		SeriesDisplay volatility= new SeriesDisplay();
		SeriesDisplay rsq= new SeriesDisplay();
		SeriesDisplay liquidity= new SeriesDisplay();
		SeriesDisplay excessReturns= new SeriesDisplay();
		SeriesDisplay cashflow= new SeriesDisplay();
		SeriesDisplay divYield= new SeriesDisplay();
		//AMLOW: standard error.
		SeriesDisplay standardError = new SeriesDisplay();
		public SeriesDisplay getPrice() {
			return price;
		}
		public SeriesDisplay getVolume() {
			return volume;
		}
		public SeriesDisplay getBeta() {
			return beta;
		}
		public SeriesDisplay getVolatility() {
			return volatility;
		}
		
		public SeriesDisplay getRsq() {
			return rsq;
		}
		public SeriesDisplay getLiquidity() {
			return liquidity;
		}
		public SeriesDisplay getExcessReturns() {
			return excessReturns;
		}
		public SeriesDisplay getCashflow() {
			return cashflow;
		}
		public SeriesDisplay getDivYield() {
			return divYield;
		}
		public SeriesDisplay getStandardError() {
			return standardError;
		}
		
	}
	
	public class TraderDisplayConfig{
		SeriesDisplay worth= new SeriesDisplay();
		SeriesDisplay holdings = new SeriesDisplay();
		SeriesDisplay holdingsNumber = new SeriesDisplay();
		SeriesDisplay leverageRatio = new SeriesDisplay();
		
		public SeriesDisplay getWorth() {
			return worth;
		}

		public SeriesDisplay getHoldings() {
			return holdings;
		}
		
		public SeriesDisplay getHoldingsNumber() {
			return holdingsNumber;
		}
		
		public SeriesDisplay getLeverageRatio() {
			return leverageRatio;
		}
	}
	
	public GraphDisplayConfig(Set<Class> traders, int numberOfAssets){
		for(Class clazz:traders){
			tradersConfig.put(clazz,new TraderDisplayConfig());
		}
		for(int i=0;i<numberOfAssets;i++){
			assetsConfig.put(i, new AssetDisplayConfig());
		}
	}

	public SeriesDisplay getIndexPrice() {
		return indexPrice;
	}

	public SeriesDisplay getIndexVolume() {
		return indexVolume;
	}

	
	public SeriesDisplay getIndexExcessReturns() {
		return indexExcessReturns;
	}

	public SeriesDisplay getIndexDivYield() {
		return indexDivYield;
	}

	public SeriesDisplay getAverageRsq() {
		return averageRsq;
	}

	public SeriesDisplay getRiskFree() {
		return riskFree;
	}

	public SeriesDisplay getEquityRiskPremium() {
		return equityRiskPremium;
	}
	
	public Map<Class, TraderDisplayConfig> getTradersConfig() {
		return tradersConfig;
	}

	public Map<Integer, AssetDisplayConfig> getAssetsConfig() {
		return assetsConfig;
	}
	
	public SeriesDisplay getIndexVolatility() {
		return indexVolatility;
	}
	
	public SeriesDisplay getIndexDividend() {
		return indexDividend;
	}
	
	
}
